1 module mruby.mrb_class; 2 3 import mruby.object; 4 import mruby.variable; 5 import mruby.value; 6 import mruby.proc; 7 import mruby; 8 9 extern (C): 10 11 struct RClass 12 { 13 enum mrb_vtype 14 { 15 MRB_TT_FALSE = 0, 16 MRB_TT_FREE = 1, 17 MRB_TT_TRUE = 2, 18 MRB_TT_FIXNUM = 3, 19 MRB_TT_SYMBOL = 4, 20 MRB_TT_UNDEF = 5, 21 MRB_TT_FLOAT = 6, 22 MRB_TT_CPTR = 7, 23 MRB_TT_OBJECT = 8, 24 MRB_TT_CLASS = 9, 25 MRB_TT_MODULE = 10, 26 MRB_TT_ICLASS = 11, 27 MRB_TT_SCLASS = 12, 28 MRB_TT_PROC = 13, 29 MRB_TT_ARRAY = 14, 30 MRB_TT_HASH = 15, 31 MRB_TT_STRING = 16, 32 MRB_TT_RANGE = 17, 33 MRB_TT_EXCEPTION = 18, 34 MRB_TT_FILE = 19, 35 MRB_TT_ENV = 20, 36 MRB_TT_DATA = 21, 37 MRB_TT_FIBER = 22, 38 MRB_TT_MAXDEFINE = 23 39 } 40 mrb_vtype tt; 41 uint color; 42 uint flags; 43 RClass* c; 44 RBasic* gcnext; 45 iv_tbl* iv; 46 kh_mt* mt; 47 RClass* super_; 48 } 49 50 RClass* mrb_class (mrb_state* mrb, mrb_value v); 51 RClass* mrb_define_class_id (mrb_state*, mrb_sym, RClass*); 52 RClass* mrb_define_module_id (mrb_state*, mrb_sym); 53 RClass* mrb_vm_define_class (mrb_state*, mrb_value, mrb_value, mrb_sym); 54 RClass* mrb_vm_define_module (mrb_state*, mrb_value, mrb_sym); 55 void mrb_define_method_vm (mrb_state*, RClass*, mrb_sym, mrb_value); 56 void mrb_define_method_raw (mrb_state*, RClass*, mrb_sym, RProc*); 57 void mrb_define_method_id (mrb_state* mrb, RClass* c, mrb_sym mid, mrb_func_t func, mrb_aspec aspec); 58 void mrb_alias_method (mrb_state* mrb, RClass* c, mrb_sym a, mrb_sym b); 59 RClass* mrb_class_outer_module (mrb_state*, RClass*); 60 RProc* mrb_method_search_vm (mrb_state*, RClass**, mrb_sym); 61 RProc* mrb_method_search (mrb_state*, RClass*, mrb_sym); 62 RClass* mrb_class_real (RClass* cl); 63 void mrb_gc_mark_mt (mrb_state*, RClass*); 64 size_t mrb_gc_mark_mt_size (mrb_state*, RClass*); 65 void mrb_gc_free_mt (mrb_state*, RClass*);